"""
有 n 盏灯，编号为 1～n。
第 1 个人把所有灯打开，
第 2 个人按下所有编号为 2 的倍数的开关（这些灯将被关掉），
第 3 个人按下所有编号为 3 的倍数的开关（其中关掉的灯将被打开，开着的灯将被关闭），依此类推。
一共有 k 个人，问最后有哪些灯开着？

输入 n 和 k，输出开着的灯的编号。k ≤ n ≤ 1000。

样例输入：
    7 3
样例输出：
    1 5 6 7
"""


def func(n, k):
    light = [0] * n  # 初始化灯的状态  0代表关、1代表开
    for i in range(1, k + 1):  # 循环人次
        if i == 1:  # 第一个人把灯全部打开
            light = [1 for _ in light]
            continue
        for j in range(1, len(light) + 1):
            if j % i == 0:  # 第 i 个人把 i 的倍数的灯切换状态
                light[j - 1] = 1 if light[j - 1] == 0 else 0

    array = []  # 初始化开着灯的编号列表
    for i, j in enumerate(light):
        if j == 1:
            array.append(i + 1)
    return array


print(func(7, 3))
